package math;

/**
 * 给你三个整数 x、y 和 z，表示数轴上三个人的位置：
 * <p>
 * x 是第 1 个人的位置。
 * y 是第 2 个人的位置。
 * z 是第 3 个人的位置，第 3 个人 不会移动 。
 * 第 1 个人和第 2 个人以 相同 的速度向第 3 个人移动。
 * <p>
 * 判断谁会 先 到达第 3 个人的位置：
 * <p>
 * 如果第 1 个人先到达，返回 1 。
 * 如果第 2 个人先到达，返回 2 。
 * 如果两个人同时到达，返回 0 。
 * 根据上述规则返回结果。
 * <p>
 * 示例 1：
 * 输入： x = 2, y = 7, z = 4
 * 输出： 1
 * 解释：
 * 第 1 个人在位置 2，到达第 3 个人（位置 4）需要 2 步。
 * 第 2 个人在位置 7，到达第 3 个人需要 3 步。
 * 由于第 1 个人先到达，所以输出为 1。
 * <p>
 * 示例 2：
 * 输入： x = 2, y = 5, z = 6
 * 输出： 2
 * 解释：
 * 第 1 个人在位置 2，到达第 3 个人（位置 6）需要 4 步。
 * 第 2 个人在位置 5，到达第 3 个人需要 1 步。
 * 由于第 2 个人先到达，所以输出为 2。
 * <p>
 * 示例 3：
 * 输入： x = 1, y = 5, z = 3
 * 输出： 0
 * 解释：
 * 第 1 个人在位置 1，到达第 3 个人（位置 3）需要 2 步。
 * 第 2 个人在位置 5，到达第 3 个人需要 2 步。
 * 由于两个人同时到达，所以输出为 0。
 */
public class FindClosestPeople_3516 {
    /**
     * Find out who will reach to z firstly
     *
     * @param x the position of the first person
     * @param y the position of the second person
     * @param z the position of the third person and the third person will not move
     * @return 1 if the first person will reach to z first, 2 if the second person will reach to z first,
     * 0 if x and y reach to z at the same time
     */
    public static int findClosest(int x, int y, int z) {
        int xDis = Math.abs(x - z);
        int yDis = Math.abs(y - z);

        // Check who will reach to z firstly
        if (xDis < yDis) {
            return 1;
        } else if (xDis > yDis) {
            return 2;
        } else {
            return 0;
        }
    }

    /**
     * Main method
     *
     * @param args the arguments
     */
    public static void main(String[] args) {
        int x = 2;
        int y = 7;
        int z = 4;

        // Expected: 1
        System.out.println(findClosest(x, y, z));

        x = 2;
        y = 5;
        z = 6;

        // Expected: 2
        System.out.println(findClosest(x, y, z));

        x = 1;
        y = 5;
        z = 3;

        // Expected: 0
        System.out.println(findClosest(x, y, z));
    }
}
